return {
  'mfussenegger/nvim-lint',
  ft = {
    'javascript',
    'javascriptreact',
  },
  opts = {
    linters_by_ft = {
        javascript = { 'eslint_d' },
        javascriptreact = { 'eslint_d' },
    },
  },
  config = function(_,opts)
    -- npm install -g eslint_d
    -- nvim-lint instead uses the vim.diagnostic module to present diagnostics
    local m = require('utils.vim')

    local lint = require('lint')
    lint.linters_by_ft = opts.linters_by_ft

    local format = '%E%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}'
            .. 'error:%.%\\{-} %m,%W%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}'
            .. 'warning:%.%\\{-} %m,%C%f:%l %m,%-G,%-G'
            .. 'error: aborting %.%#,%-G'
            .. 'error: Could not compile %.%#,%E'
            .. 'error: %m,%Eerror[E%n]: %m,%-G'
            .. 'warning: the option `Z` is unstable %.%#,%W'
            .. 'warning: %m,%Inote: %m,%C %#--> %f:%l:%c'

    m.autocmd({ 'BufWritePost' }, {
        group = m.augroup('Lint'),
        callback = function()
            require("lint").try_lint()
        end
    })

  end,
}
-- EOP
